/**
 * Created by PanJiaChen on 16/11/18.
 */

/**
 * Parse the time to string
 * @param {(Object|string|number)} time
 * @param {string} cFormat
 * @returns {string | null}
 */
export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
    const value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') {
      return ['日', '一', '二', '三', '四', '五', '六'][value]
    }
    return value.toString().padStart(2, '0')
  })
  return time_str
}

/**
 * @param {number} time
 * @param {string} option
 * @returns {string}
 */
export function formatTime(time, option) {
  if (('' + time).length === 10) {
    time = parseInt(time) * 1000
  } else {
    time = +time
  }
  const d = new Date(time)
  const now = Date.now()

  const diff = (now - d) / 1000

  if (diff < 30) {
    return '刚刚'
  } else if (diff < 3600) {
    // less 1 hour
    return Math.ceil(diff / 60) + '分钟前'
  } else if (diff < 3600 * 24) {
    return Math.ceil(diff / 3600) + '小时前'
  } else if (diff < 3600 * 24 * 2) {
    return '1天前'
  }
  if (option) {
    return parseTime(time, option)
  } else {
    return (
      d.getMonth() +
      1 +
      '月' +
      d.getDate() +
      '日' +
      d.getHours() +
      '时' +
      d.getMinutes() +
      '分'
    )
  }
}

/**
 * @param {string} url
 * @returns {Object}
 */
export function param2Obj(url) {
  const search = url.split('?')[1]
  if (!search) {
    return {}
  }
  return JSON.parse(
    '{"' +
    decodeURIComponent(search)
      .replace(/"/g, '\\"')
      .replace(/&/g, '","')
      .replace(/=/g, '":"')
      .replace(/\+/g, ' ') +
    '"}'
  )
}

/**
 * @param {string} search
 * @param {string} name
 * @returns {string}
 */
export function get_search_token(search, name) {
  const params = search.replace('?', '').split('&')
  let acces_token = ''
  let arr = []
  for (let i = 0; i < params.length; i++) {
    arr = params[i].split('=')
    if (arr[0] === name) {
      acces_token = arr[1]
      break
    }
  }
  return acces_token
}

/**
 * @param {string} search
 * @param {string} name
 * @returns {string}
 */
export function get_img_src(img, baseurl) {
  let src = ''
  if (img && img !== '') {
    if (img.search(/^http/) > -1) {
      return img
    } else {
      if (baseurl) {
        src = baseurl + img
      } else {
        src = process.env.VUE_APP_WAREHOUSE_API + img
      }
    }
  } else {
    // src = process.env.VUE_APP_BASE_API + '/assets/image/goods_default.png'
    src = 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
  }
  return src
}

// 把相对路径转绝对路径
// var toAbsURL = (function() {
//   var directlink = function(url) {
//     var a = document.createElement('a')
//     a.href = url
//     return a.href
//   }
//   return directlink('') === '' ? function(url) {
//     var div = document.createElement('div')
//     div.innerHTML = '<a href="' + url.replace(/"/g, '%22') + '"/>'
//     return div.firstChild.href
//   } : directlink
// }())

// 把相对路径转绝对路径
export function toAbsURL(url) {
  var a = document.createElement('a')
  a.href = url
  return a.href
}

export function checkImageWidthHeight(file) { // 检测图片宽高
  return new Promise(function(resolve, reject) {
    var reader = new FileReader()
    reader.onload = function(event) {
      var image = new Image()
      image.onload = function() {
        var width = this.width
        var height = this.height
        if (width > 1200 || width < 300) {
          reject('当前图片宽高为:' + width + 'x' + height + '。图片尺寸必须在300~1200之间！')
        }
        if (height > 1200 || height < 300) {
          reject('当前图片宽高为:' + width + 'x' + height + '。图片尺寸必须在300~1200之间！')
        }
        if (height !== width) {
          reject('图片宽度和高度必需相同！')
        }
        resolve()
      }
      image.src = event.target.result
    }
    reader.readAsDataURL(file)
    // resolve(false)
  })
}
